package br.edu.ifrn.dao;

import br.edu.ifrn.dominio.Curso;
import br.edu.ifrn.dominio.Perfil;
import br.edu.ifrn.dominio.Usuario;
import br.edu.ifrn.generic.GenericDAO;

public class CursoDAO extends GenericDAO<Curso>{
	
	public CursoDAO() {
		super();
	}
	
	@Override
	public void beforeInsert(Curso c)  throws Exception{
		beforeUpdate(c);
	}
	
	@Override
	public void afterInsert(Curso c)  throws Exception{
	
	}
	
	@Override
	public void beforeUpdate(Curso c)  throws Exception{
		if (c.getId()!=null){
			Usuario cordenadorAnterior = new CursoDAO().consultarPorId(c.getId()).getCoordenador();
			
			if(cordenadorAnterior != null && cordenadorAnterior.getCursosCordenados() != null && cordenadorAnterior.getCursosCordenados().size()==1){
				cordenadorAnterior.setPerfil(Perfil.Professor);
				this.em.merge(cordenadorAnterior);
			}
		}
		
		Usuario usuario = c.getCoordenador();
		if(!usuario.getPerfil().equals(Perfil.Coordenador)){
			usuario.setPerfil(Perfil.Coordenador);
			this.em.merge(usuario);
		}
	}
	
	@Override
	public void afterUpdate(Curso s)  throws Exception{
		
	}
}
